﻿namespace AiFrame.InterfaceLib.Plugins
{
    /// <summary>
    /// Represents a plugin.
    /// </summary>
    public interface IPlugin
    {
        /// <summary>
        /// Initializing method for the plugin to load.
        /// </summary>
        /// <param name="ci">An instance of <see cref="ICoreInterface"/>.</param>
        /// <param name="programPath">The path of the DLL.</param>
        void Load(ICoreInterface ci, string programPath);

        /// <summary>
        /// Unloads the plugin.
        /// The plugin is requested to unregister from all registered systems. 
        /// </summary>
        void Unload();

        /// <summary>
        /// Gets the name of the plugin.
        /// </summary>
        /// <returns>The plugin's name</returns>
        string GetCaption();


    }
}